const path = require('path')
const fileUtils = require('../utils/file_utils')
const WebSocket = require('ws')
    // 创建Websocket服务端对象，绑定端口号9998
const wss = new WebSocket.Server({
    port: 9998
})

//服务端开启监听
module.exports.listen = () => {
    //对客户端的连接事件进行监听
    // client代表客户端连接socket对象
    wss.on('connection', client => {
        console.log('有客户端连接了')
            //对客户端的对象进行message事件监听
            //msg：客户端发送给服务端的数据
        client.on('message', async msg => {
            console.log('客户端发送给服务端的数据：' + msg)
            let payload = JSON.parse(msg)
            const action = payload.action
            // console.log(msg)
            if (action === 'getData') {
                let filePath = '../data/' + payload.chartName + '.json'
                filePath = path.join(__dirname, filePath)
                const ret = await fileUtils.getFileJsonData(filePath)
                    //需要在服务端取到数据的基础上，增加一个data字段
                    //data对应的值就是，data目录下某个json文件的内容
                payload.data = ret
                client.send(JSON.stringify(payload))
            } else {
                //将接收到的数据原封不动的转发个每一个连接的客户端
                // wss.clients：所有连接的客户端
                wss.clients.forEach(client => {
                    console.log('服务端发送给客户端的数据:' + msg)
                    client.send(msg)
                })
            }
            //由服务端网客户端发送数据
            // client.send('服务端发送给客户端数据了')
        })
    })
}